import com.luffy.devops.Deploy
import com.luffy.devops.Docker
import com.luffy.devops.Notification
import com.luffy.devops.Sonar

//docker镜像构建入口函数
def docker(String repo,String tag,String credentialsId,String context=".",dockerfile="Dockerfile"){
    /**
     * Jenkinsfile调用docker build和push函数
     */
    // credentialsId 参数是Jenkins设置凭据(保存账户密码)的ID，需要传进来docker login通过凭据ID读取账户密码
    return new Docker().init(repo,tag,credentialsId,context,dockerfile)
    //剩下 build,push等方法在Jenkins中调用即可
}



def deploy(String resourcePath, Boolean watch = true, String workloadFilePath){
    /**
     * Jenkinsfile调用部署k8s入口函数
     * @param resourcePath  deploy目录名
     * @param watch         持续检测的开关，默认开
     * @param workloadFilePath  需要检测dameset还是deployment的资源类型的路径，一般和deploy目录名同名
     * @return
     */
    return new Deploy().init(resourcePath, watch, workloadFilePath)
}



def notificationSuccess(String project, String receiver="dingTalk", String credentialsId="dingTalk", String title=""){
    /**
     * Jenkinsfile调用发送通知消息入口函数
     * @param project           构建发送文字的项目名，省去多写code调用获取，直接传
     * @param receiver          发送消息的平台，钉钉，微信等
     * @param credentialsId     jenkins中的凭证id，需要在library中获取凭证账户密码，钉钉发消息token等信息
     * @param title             显示发送消息的标题，比如 "构建成功"
     * @return                  不需要return  直接发送消息，不需要级联调用
     */
    new Notification().init(project, receiver, credentialsId, title).notification("success")
}


def notificationFailure(String project, String receiver="dingTalk", String credentialsId="dingTalk", String title="k"){
    /**
     * Jenkinsfile调用发送失败消息入口
     */
    new Notification().init(project, receiver, credentialsId, title).notification("failure")
}


def scan(String projectVersion="", Boolean waitScan = true) {
    /**
     * Jenkinsfile调用代码扫描入口函数
     * projectVersion   sonar页面传代码扫描的版本生成在页面中
     * waitScan         让library是否等待sonar扫描的结果
     */
    return new Sonar().init(projectVersion, waitScan)
}


import com.luffy.devops.Robot
def robotTest(String comp=""){
    /**
     * Jenkinsfile调用 测试用例入口函数
     *  接收comp参数，该参数会通过jenkins 发送给给robot项目的Jenkinsfile中从环境变量拿env.comp参数来判断对哪个项目执行测试用例
     */
    new Robot().acceptanceTest(comp)
}




